<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    // reduce 方法，数组的求和方法

    // let arr = [2, 3, 4, 5]
    // 语法一：
    // let res1 = arr.reduce((总和, 数组元素) => {
    //   return 累加的公式
    // }, 初始值)

    // let res1 = arr.reduce((t,c) => {
    //   // 有初始值，开始的时候，t = 初始值； c = 第1个元素
    //   // 第1次循环： t = 100； c = 2    返回 100 + 2 = 102
    //   // 第2次循环： t = 102； c = 3    返回 102 + 3 = 105
    //   // 第3次循环： t = 105； c = 4    返回 105 + 4 = 109
    //   // 第4次循环： t = 109； c = 5    返回 109 + 5 = 114
    //   return t + c
    // }, 100)

    // console.log(res1);

    // 语法二：
    // let res2 = arr.reduce((总和, 数组元素) => {
    //   return 累加的公式
    // })

    // let res2 = arr.reduce((t, c) => {
    //   // 因为没有初始值，所以开始的时候， t = 第1个元素；c = 第2个元素
    //   // 第1次循环： t = 2 c = 3    返回 2 + 3 = 5
    //   // 第2次循环： t = 5； c = 4    返回 5 + 4 = 9
    //   // 第3次循环： t = 9； c = 5    返回 9 + 5 = 14
    //   return t + c
    // })

    // console.log(res2);

    // ----------------------------- 实例 ---------------------------------------
    let list = [
        { id: 21, subject: '语文', score: 90 },
        { id: 32, subject: '数学', score: 100 },
        { id: 35, subject: '艺术', score: 100 }
      ]

      // let res = list.reduce(() => {}, 初始值)
      let res = list.reduce((t, c) => {
        // 有初始值，t = 0  c = 第1个元素
        // 第1次循环：t = 0;  c = 第1个元素；   返回 0 + 90 = 90
        // 第2次循环：t = 90; c = 第2个元素；   返回 90 + 100 = 190
        // 第3次循环：t = 190;c = 第3个元素；   返回 190 + 100 = 290
        return t + c.score
      }, 0)

      console.log(res)
  </script>
</body>

</html>